/**
 *
 */
package siebes.rmi.sorter;

import java.io.Serializable;
import java.rmi.RemoteException;

/**
 * @author eddie
 * kan gecompared worden. Eerst op naam, als die gelijk is op leeftijd.
 */
public class KomPeertje implements Comparable<Object>, Serializable {

    /**
     *Deze UID heeft te maken met een integriteitscheck.
     */
    private static final long serialVersionUID = -5761516438494070369L;

    /**
     * naam van peer.
     */
    private String naam;

    /**
     * leeftijd van peer.
     */
    private int leeftijd;

    /**
     * @param finalnaam permanente naam
     * @param finalleeftijd permanente leeftijd (niet realistisch maar ach)
     * @throws RemoteException ivm RMI
     */
    public KomPeertje(final String finalnaam, final int finalleeftijd)
            throws RemoteException {
        super();
        this.naam = finalnaam;
        this.leeftijd = finalleeftijd;
    }

    /**
     * @return naam
     */
    public final String getNaam() {
        return naam;
    }


    /**
     * @return leeftijd
     */
    public final int getLeeftijd() {
        return leeftijd;
    }


    /* (non-Javadoc)
     * @see java.lang.Comparable#compareTo(java.lang.Object)
     */
    @Override
    public final int compareTo(final Object anderPeertje) {
        // TODO Auto-generated method stub
        if (!(anderPeertje instanceof KomPeertje)) {
              throw new ClassCastException("Een KomPeertje wordt verwacht.");
        }
        int anderPeertjeLeeftijd = ((KomPeertje) anderPeertje).getLeeftijd();
        String anderPeertjeNaam = ((KomPeertje) anderPeertje).getNaam();
        if (this.getNaam().compareToIgnoreCase(anderPeertjeNaam) != 0) {
            return this.getNaam().compareToIgnoreCase(anderPeertjeNaam);
        } else {
            return this.leeftijd - anderPeertjeLeeftijd;
        }
    }

    /* (non-Javadoc)
     * @see java.lang.Object#toString()
     */
    @Override
    public final String toString() {
        return "Leeftijd: " + this.leeftijd + " \tNaam:" + this.naam;
    }
}
